//这个文件是所有store的入口，可以存放公共的state、actions、mutations
//注意，每个页面自己的store，应该通过store.registerModule的形式，懒加载对应页面的数据
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export function createStore() {
  //在Vuex.Store的原型上添加自己封装注册module的方法
  Vuex.Store.prototype.registerStoreModule = function(moduleName, module) {
    const moduleIsRegistered =
      this._modules.root._children[moduleName] !== undefined
    const stateExists = this.state[moduleName]
    if (!moduleIsRegistered) {
      this.registerModule(moduleName, module, {
        preserveState: stateExists
      })
    }
  }

  const store = new Vuex.Store({
    state: {
      //客户端是否需要重新请求页面数据，
      //这个是同构操作，如果服务端请求失败，会设置这个状态为true，客户端会根据这个状态，ajax请求界面
      clientNeedReload: false
    },
    actions: {
      async getUserInfo({ commit }) {}
    },
    mutations: {
      //设置登录方式
      setLoginMethod(state, payload) {}
    }
  })

  return store
}
